1
За пределами «счастливого пути»: Работа с исключениями
AI035Lesson 5
00:00

В языке Ruby переход за пределы «счастливого пути» означает переход от линейной логики к оборонительной позиции, где сбои рассматриваются как объекты первого класса а не как фатальные аварии программы.

1. Иерархия исключений

Язык Ruby заранее определяет чёткую иерархию исключений, показанную на рисунке 8.1. Каждая ошибка является экземпляром класса в этой иерархии, начиная с корневого класса Exception корень. Понимание этой иерархии крайне важно: ошибки приложений обычно наследуются от StandardError, в то время как системные сбои (например, NoMemoryError) напрямую наследуются от Exception.

ExceptionSignalExceptionScriptErrorNoMemoryErrorStandardErrorRuntimeErrorArgumentError

2. Ошибки как объекты данных

В отличие от низкоуровневых языков, где ошибка может быть простым кодом возврата, в Ruby упаковывает контекст—включая строку сообщения и трассировку выполнения—в формальный объект. Это позволяет разработчикам рассматривать прерывания во время выполнения как данные, которые можно анализировать и управлять ими через наследование.

Архитектурный замысел
Иерархия различает фатальные системные сбои (которые не должны перехватываться) и восстанавливаемые ошибки приложений (StandardError).
main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>